/**
 * API接口封装
 * 提供所有后端API接口的调用方法
 */

import { get, post } from '@/utils/request';
import type {
  School,
  ClassFilters,
  ClassListResponse,
  ClassCoursesResponse,
  ClassListParams,
  ClassFiltersParams,
  ClassCoursesParams,
} from '@/types/api';

// 导出RequestError供外部使用
export { RequestError } from '@/utils/request';

/**
 * 获取学校列表
 * @returns Promise<School[]> - 学校列表
 */
export const getSchools = (): Promise<School[]> => get<School[]>('/schools');

/**
 * 获取班级筛选条件（动态联动）
 * @param params - 筛选参数
 * @returns Promise<ClassFilters> - 筛选条件数据
 */
export const getClassFilters = (params: ClassFiltersParams): Promise<ClassFilters> =>
  get<ClassFilters>('/classes/filters', params);

/**
 * 获取班级列表
 * @param params - 查询参数
 * @returns Promise<ClassListResponse> - 班级列表数据
 */
export const getClassList = (params: ClassListParams): Promise<ClassListResponse> =>
  get<ClassListResponse>('/classes', params);

/**
 * 获取班级课程表
 * @param classCode - 班级编号
 * @param params - 查询参数（可选的周次和星期）
 * @returns Promise<ClassCoursesResponse> - 课程表数据
 */
export const getClassCourses = (
  classCode: string
): Promise<ClassCoursesResponse> =>
  post<ClassCoursesResponse>(`/classes/courses`, { class_code: classCode });
